package com.leyou.controller;

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.leyou.common.Result;
import com.leyou.pojo.StoreActivity;
import com.leyou.service.ActivityService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

/**
 * @author ls
 * @version 1.0
 * @description: 门店活动
 * @date 2022/6/28 8:51
 */
@RestController
@RequestMapping("/activity")
@CrossOrigin
public class ActivityController {

    @Autowired
    private ActivityService activityService;

    @Value("${files.upload.path}")
    private String fileUploadPath;

    /**
     * 添加门店活动
     * @param storeActivity
     * @return
     */
    @PostMapping("/saveActivity")
    public Result saveActivity(StoreActivity storeActivity){
        if (storeActivity.getActThumbnail().equals(" ")){
            return Result.error();
        }
        return Result.ok().data("activity",activityService.saveActivity(storeActivity));
    }

    /**
     * @description: 文件上传
     * 想实现的功能： 上传相同文件，但是只是数据库增加一条记录，磁盘不再新增内容相同的文件
     * @param: file 前端传过来的文件
     * @return: java.lang.String
     * @author ls
     * @date: 2022/5/23
     */
    @RequestMapping("/upload")
    public String upload(MultipartFile goods) throws IOException {
        // 原始名称
        String originalFilename = goods.getOriginalFilename();
        // 获取文件类型
        String type = FileUtil.extName(originalFilename);
        // 定义一个文件唯一的标识码
        String uuid = IdUtil.fastSimpleUUID();
        // 唯一的标识码 + . + 文件类型
        String fileUUID = uuid + StrUtil.DOT + type;
        // 最后文件存储的路径 目录
        File uploadFile = new File(fileUploadPath + fileUUID);
        // 判断父级目录是否存在，如果不存在的话则创建一个新的文件目录 (精简后)
        // 不存在的话
        if (!uploadFile.getParentFile().exists()){
            // 创建目录
            uploadFile.getParentFile().mkdirs();
        }
        // 定义url
        String url;
        // 上传文件到磁盘
        goods.transferTo(uploadFile);
        // 数据库若不存在重复文件，则不删除刚才上传的文件
        url = "http://localhost:1234/management-mall/activity/" + fileUUID;

        // 存储数据库
        StoreActivity actThumbnail = new StoreActivity();
        actThumbnail.setActThumbnail(url);
        activityService.saveActivity(actThumbnail);
        return url;
    }
}